/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package moteur.carte;
import java.awt.Color;
import java.awt.Graphics2D;
import java.util.BitSet;

/**
 *
 * @author nlupins
 */
public class Ville extends Sommet{
    /**
     * 
     */
    public static final String[] nomsVille =
    { "Accons", "Ailhon", "Aizac", "Ajoux", "Alba-la-Romaine", "Albon-d'Ardeche", "Alboussiere", "Alissas",
    "Andance", "Annonay", "Antraigues-sur-Volane", "Arcens", "Ardoix", "Arlebosc", "Arras-sur-Rhone", "Asperjoc",
    "Astet", "Aubenas", "Aubignas", "Baix", "Balazuc", "Banne", "Barnas", "Beauchastel", "Beaulieu", "Beaumont",
    "Beauvene", "Berrias-et-Casteljau", "Berzeme", "Bessas", "Bidon", "Boffres", "Bogy", "Boree", "Borne",
    "Boucieu-le-Roi", "Boulieu-les-Annonay", "Bourg-Saint-Andeol", "Bozas", "Brossainc", "Burzet", "Cellier-du-Luc",
    "Chalencon", "Chambonas", "Champagne", "Champis", "Chandolas", "Chaneac", "Charmes-sur-Rhone", "Charnas",
    "Chassiers", "Chateaubourg", "Chateauneuf-de-Vernoux", "Chauzon", "Chazeaux", "Cheminas", "Chirols", "Chomerac",
    "Colombier-le-Cardinal", "Colombier-le-Jeune", "Colombier-le-Vieux", "Cornas", "Coucouron", "Coux", "Creysseilles",
    "Cros-de-Georand", "Cruas", "Darbres", "Davezieux", "Desaignes", "Devesset", "Dompnac", "Dornas",
    "Duniere-sur-Eyrieux", "Eclassan", "Empurany", "Etables", "Fabras", "Faugeres", "Felines", "Flaviac", "Fons",
    "Freyssenet", "Genestelle", "Gilhac-et-Bruzac", "Gilhoc-sur-Ormeze", "Gluiras", "Glun", "Gourdon", "Gras",
    "Gravieres", "Grospierres", "Guilherand-Granges", "Intres", "Issamoulenc", "Issanlas", "Issarles", "Jaujac",
    "Jaunac", "Joannas", "Joyeuse", "Juvinas", "La Rochette", "La Souche", "La Voulte-sur-Rhone", "Labastide-de-Virac",
    "Labastide-sur-Besorgues", "Labatie-d'Andaure", "Labeaume", "Labegude", "Lablachere", "Laboule", "Lachamp-Raphael",
    "Lachapelle-Graillouse", "Lachapelle-sous-Aubenas", "Lachapelle-sous-Chaneac", "Lafarre", "Lagorce",
    "Lalevade-d'Ardeche", "Lalouvesc", "Lamastre", "Lanarce", "Lanas", "Largentiere", "Larnas", "Laurac-en-Vivarais",
    "Laval-d'Aurelle", "Laveyrune", "Lavillatte", "Lavilledieu", "Laviolle", "Le Beage", "Le Chambon", "Le Cheylard",
    "Le Crestet", "Le Lac-d'Issarles", "Le Plagnal", "Le Pouzin", "Le Roux", "Le Teil", "Lemps", "Lentilleres",
    "Les Assions", "Les Ollieres-sur-Eyrieux", "Les Salelles", "Les Vans", "Lesperon", "Limony", "Loubaresse",
    "Lussas", "Lyas", "Malarce-sur-la-Thines", "Malbosc", "Marcols-les-Eaux", "Mariac", "Mars", "Mauves", "Mayres",
    "Mazan-l'Abbaye", "Mercuer", "Meyras", "Meysse", "Mezilhac", "Mirabel", "Monestier", "Montpezat-sous-Bauzon",
    "Montréal", "Montselgues", "Nonieres", "Nozieres", "Orgnac-l'Aven", "Ozon", "Pailhares", "Payzac", "Peaugres",
    "Pereyres", "Peyraud", "Planzolles", "Plats", "Pont-de-Labeaume", "Pourcheres", "Prades", "Pradons", "Pranles",
    "Preaux", "Privas", "Prunet", "Quintenas", "Ribes", "Rochecolombe", "Rochemaure", "Rochepaule", "Rocher",
    "Rochessauve", "Rocles", "Roiffieux", "Rompon", "Rosieres", "Ruoms", "Sablieres", "Sagnes-et-Goudoulet",
    "Saint-Agreve", "Saint-Alban-Auriolles", "Saint-Alban-d'Ay", "Saint-Alban-en-Montagne", "Saint-Andeol-de-Berg",
    "Saint-Andeol-de-Fourchades", "Saint-Andeol-de-Vals", "Saint-Andre-de-Cruzieres", "Saint-Andre-en-Vivarais",
    "Saint-Andre-Lachamp", "Saint-Apollinaire-de-Rias", "Saint-Barthelemy-Grozon", "Saint-Barthelemy-le-Meil",
    "Saint-Barthelemy-le-Plain", "Saint-Basile", "Saint-Bauzile", "Saint-Christol", "Saint-Cierge-la-Serre",
    "Saint-Cierge-sous-le-Cheylard", "Saint-Cirgues-de-Prades", "Saint-Cirgues-en-Montagne", "Saint-Clair",
    "Saint-Clement", "Saint-Cyr", "Saint-Desirat", "Saint-Didier-sous-Aubenas", "Saint-Etienne-de-Boulogne",
    "Saint-Etienne-de-Fontbellon", "Saint-Etienne-de-Lugdares", "Saint-Etienne-de-Serre", "Saint-Etienne-de-Valoux",
    "Saint-Felicien", "Saint-Fortunat-sur-Eyrieux", "Saint-Genest-de-Beauzon", "Saint-Genest-Lachamp",
    "Saint-Georges-les-Bains", "Saint-Germain", "Saint-Gineis-en-Coiron", "Saint-Jacques-d'Atticieux",
    "Saint-Jean-Chambre", "Saint-Jean-de-Muzols", "Saint-Jean-le-Centenier", "Saint-Jean-Roure",
    "Saint-Jeure-d'Andaure", "Saint-Jeure-d'Ay", "Saint-Joseph-des-Bancs", "Saint-Julien-Boutieres",
    "Saint-Julien-du-Gua", "Saint-Julien-du-Serre", "Saint-Julien-en-Saint-Alban", "Saint-Julien-Labrousse",
    "Saint-Julien-le-Roux", "Saint-Julien-Vocance", "Saint-Just", "Saint-Lager-Bressac", "Saint-Laurent-du-Pape",
    "Saint-Laurent-les-Bains", "Saint-Laurent-sous-Coiron", "Saint-Marcel-d'Ardeche", "Saint-Marcel-les-Annonay",
    "Saint-Martial", "Saint-Martin-d'Ardeche", "Saint-Martin-de-Valamas", "Saint-Martin-sur-Lavezon",
    "Saint-Maurice-d'Ardeche", "Saint-Maurice-d'Ibie", "Saint-Maurice-en-Chalencon", "Saint-Melany",
    "Saint-Michel-d'Aurance", "Saint-Michel-de-Boulogne", "Saint-Michel-de-Chabrillanoux", "Saint-Montan",
    "Saint-Paul-le-Jeune", "Saint-Peray", "Saint-Pierre-de-Colombier", "Saint-Pierre-la-Roche", "Saint-Pierre-Saint-Jean",
    "Saint-Pierre-sur-Doux", "Saint-Pierreville", "Saint-Pons", "Saint-Priest", "Saint-Privat", "Saint-Prix",
    "Saint-Remeze", "Saint-Romain-d'Ay", "Saint-Romain-de-Lerps", "Saint-Sauveur-de-Cruzieres",
    "Saint-Sauveur-de-Montagut", "Saint-Sernin", "Saint-Sylvestre", "Saint-Symphorien-de-Mahun",
    "Saint-Symphorien-sous-Chomerac", "Saint-Thome", "Saint-Victor", "Saint-Vincent-de-Barres",
    "Saint-Vincent-de-Durfort", "Sainte-Eulalie", "Sainte-Marguerite-Lafigère", "Salavas", "Sampzon", "Sanilhac",
    "Sarras", "Satillieu", "Savas", "Sceautres", "Secheras", "Serrieres", "Silhac", "Soyons", "Talencieux",
    "Tauriers", "Thorrenc", "Thueyts", "Toulaud", "Tournon-sur-Rhone", "Ucel", "Usclades-et-Rieutord", "Uzer",
    "Vagnas", "Valgorge", "Vallon-Pont-d'Arc", "Vals-les-Bains", "Valvigneres", "Vanosc", "Vaudevant", "Vernon",
    "Vernosc-les-Annonay", "Vernoux-en-Vivarais", "Vesseaux", "Veyras", "Villeneuve-de-Berg", "Villevocance", "Vinezac",
    "Vinzieux", "Vion", "Viviers", "Vocance", "Vogue" } ;
    /**
     * 
     */
    public static final int MAXARC = 5;
    private String nom;
    transient private BitSet flag;

    /**
     * 
     */
    public Ville(){
        super(MAXARC);
        x = 0 ;
        y = 0 ;
        flag = new BitSet();
    }

    /**
     * Pour créer une copy. On aurait p-e pu surcharger clone().
     * @param toCopy
     */
    public Ville(Ville toCopy) {
        super(MAXARC) ;
        nom = toCopy.getNom();
        x = toCopy.getX();
        y = toCopy.getY();
        flag = toCopy.getFlag();
    }

    /**
     * 
     * @param n
     */
    public void setNom(String n) {
        nom = n ;
    }

    /**
     * 
     * @return
     */
    public String getNom() {
        return nom ;
    }

    /**
     * Set une sorte de tableau de booléen indiquant quel joueurs sont passés par là.
     * Plutot sale, mais ca permet de faire le boulot.
     * @param b
     */
    public void setFlag(BitSet b) {
        flag = b ; //TODO: set/get du booléen, pas de tous ; priorité basse
    }

    /**
     * Recupere une sorte de tableau de booléen indiquant quel joueurs sont passés par là.
     * @return
     */
    public BitSet getFlag() {
        return flag; //TODO: set/get du booléen, pas de tous ; priorité basse
    }

    @Override
    public String toString() {
        return nom;
    }

    @Override
    public void draw(Graphics2D g, int tailleCarte){
        int taille = (int) (width * tailleCarte);
        g.setColor(Color.black);
        g.fillRect((int)(x*tailleCarte), (int)(y*tailleCarte), taille, taille);
        g.setColor(Color.orange);
        g.drawString(nom, (int)(x*tailleCarte), (int)(y*tailleCarte + taille*2/3));
    }

}
